package com.gusto.engine.beans.model;

import java.util.List;

import com.gusto.engine.beans.exceptions.PropertyAccessException;

/**
 * <p>Defines an abstract Resource {@link Res} by providing the necessary methods to access attributes.<br/>
 * It should implement toString() to reflect the identity of the object.</p>
 * 
 * @author amokrane.belloui@gmail.com
 */
public interface Res {
	
	/**
	 * Gets a Resource as a property
	 */
	public Res getResourceProperty(String property) throws PropertyAccessException;
	
	/**
	 * Gets a Value as a property
	 */
	public Object getValueProperty(String property) throws PropertyAccessException;
	
	/**
	 * Gets a Set of Resource as a property
	 */
	public List<Res> getResourceSetProperty(String property) throws PropertyAccessException;
	
	/**
	 * Gets a Set of Values as a property
	 */
	public List<Object> getValueSetProperty(String property) throws PropertyAccessException;
	
}
